我們有了基本的網站後,再來需要有一些進階功能,
例如驗證(登入)與授權(權限),
在ASP.NET Core 安全性概觀裡面有完整說明。
ASP.NET Core 包含管理驗證、授權、資料保護、HTTPS 強制、應用程式秘密、XSRF/CSRF 防護和 CORS 管理的功能
驗證是決定使用者身分識別的程式。 授權是判斷使用者是否有權存取資源的程式。
在 ASP.NET Core 中,驗證是由 IAuthenticationService 中介軟體所使用的來處理,
常用的有兩種驗證方式
下列程式碼會註冊的驗證服務和處理常式, cookie 以及 JWT 持有人驗證配置
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => Configuration.Bind("CookieSettings", options));
專案名稱: PellokITHomeAccount
dotnet new webapp --auth Individual -o PellokITHomeAccount
執行程式,發現有Register(註冊)與Login(登入)兩個功能
https://localhost:5001/
Identity ASP.NET Core 專案中的 Scaffold
安裝 Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet aspnet-codegenerator -h
dotnet aspnet-codegenerator identity -h
dotnet aspnet-codegenerator identity --listFiles
檔案名稱 | 說明 |
---|---|
Account.Register | 註冊頁面 |
Account.RegisterConfirmation | 註冊驗證 |
Account.Login | 登入頁面 |
Account.Logout | 登出功能 |
dbContext: PellokITHomeAccount.Data.ApplicationDbContext
files: Account.Register;Account.Login;Account.Logout;Account.RegisterConfirmation
dotnet aspnet-codegenerator identity -dc PellokITHomeAccount.Data.ApplicationDbContext --files "Account.Register;Account.Login;Account.Logout;Account.RegisterConfirmation"
遇到: "Please install the following packages to your project for scaffolding identity: Microsoft.EntityFrameworkCore.SqlServer"
解決:安裝 Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
檢查 Areas/Identiry 資料夾,發現有註冊、登入、登出、註冊確認等頁面資料
登入頁面
建議新手可以實作對照著看
檢查 Register
停用預設帳戶驗證
登入
登出
測驗Identity
看Identity
Identity要素
遷移至 ASP.NET CoreIdentity
設定密碼強度
AddDefault Identity 並新增Identity
防止發行靜態 Identity 資產
最後可以部署到Azure線上玩玩看,
可以參考上一篇Day16 實作官網教學 JavaScript 呼叫 ASP.NET Core web API最後的部署方式。
上一篇 Day16 實作官網教學 JavaScript 呼叫 ASP.NET Core web API
下一篇 Day18 Azure Pipelines服務